【小ネタ】 Jetson NanoでAruco「AR(Augmented Reality)マーカー検出機能」を使用する
1 はじめに
CX事業本部の平内(SIN)です。
Jetson Nanoでは、JETSON NANO DEVELOPER KITが公開されており、イメージは、通常これを利用します。
OpenCVは、最新のJetPack 4.4でVer4.1.1がセットアップされており、そのまま利用可能です。
しかし、opencv_contribのaruco「AR(Augmented Reality)マーカー検出機能」https://github.com/opencv/opencv_contrib/tree/3.3.0/modules/arucoについては、含まれておらず、利用できません。
nvidia@nvidia-desktop:~$ python3 Python 3.6.9 (default, Jul 17 2020, 12:50:27) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> print(cv2.__version__) 4.1.1 >>> cv2.aruco Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'cv2' has no attribute 'aruco' >>>
本記事は、Jetson Nanoで、arucoモジュールを組み込んで、再コンパイルした際のメモです。
2 OpenCV 4.1.1のコンパイル
作業については、以下のページを参考にさせて頂きました。
https://qiita.com/daisuzu_/items/f17d365a895a599f832f
opencv本体と、opencv_contribのコードをダウンロードし、本体のコードにmodules/arucoを追加してコンパイルしました。
$ wget https://github.com/opencv/opencv/archive/4.1.1.zip -O opencv-4.1.1.zip $ wget https://github.com/opencv/opencv_contrib/archive/4.1.1.zip -O opencv_contrib-4.1.1.zip $ unzip opencv-4.1.1.zip $ unzip opencv_contrib-4.1.1.zip $ cp -r ./opencv_contrib-4.1.1/modules/aruco ./opencv-4.1.1/modules/ $ cp -r ./opencv_contrib-4.1.1/modules/cudev ./opencv-4.1.1/modules/ $ cd opencv-4.1.1/ $ mkdir build $ cd build
cmakeのスイッチは、以下のとおりです。
$ cmake -D CUDA_HOST_COMPILER=/usr/bin/gcc-7 -D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" -D CUDA_VERSION="10000" -DWITH_NVCUVID=OFF -DENABLE_CCACHE=OFF -DEIGEN_INCLUDE_PATH=/usr/include/eigen3 -D HAVE_CUDA=1 -D WITH_CUDA=ON -D CUDA_ARCH_BIN="5.3" -D CUDA_ARCH_PTX="" -DWITH_FAST_MATH=OFF -D WITH_GSTREAMER=ON -D WITH_LIBV4L=ON -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -DPYTHON3_EXECUTABLE=/usr/bin/python3 -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/ -D WITH_CUBLAS=ON -D LAPACK_CBLAS_H=/usr/include/aarch64-linux-gnu/cblas.h ..
cmakeの出力で、arucoモジュールが有効になっていることが確認できます。
-- OpenCV modules: -- To be built: aruco calib3d core cudev dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo python3 stitching video videoio
makeとinstall
$ make -j4 $ sudo make install
3 確認
getBuildInformation()で、組み込まれたモジュールに、arucoが確認できます。
$ python3 Python 3.6.9 (default, Jul 17 2020, 12:50:27) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 >>> print(cv2.getBuildInformation()) General configuration for OpenCV 4.1.1 ===================================== ・・・(略) OpenCV modules: To be built: aruco calib3d core cudev dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo python3 stitching video videoio
また、以下のように、エラー無く利用できている事が確認できます。
>>> aruco = cv2.aruco >>> dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50) >>>
4 最後に
JetPackにセットアップされているOPenCVで、opencv_contribのモジュールを利用する際のメモとして、記録させて頂きました。